Modified lines:  1
Added line:  77
Removed line:  None
Generated by diff2html
© Yves Bailly, MandrakeSoft S.A. 2001
diff2html is licensed under the GNU GPL.

  DiffViewer/output/AnalysisResults.java//AnalysisResults.java_000     DiffViewer/output/AnalysisResults.java//AnalysisResults.java_001
  126 lines
5326 bytes
Last modified : Mon May 14 20:27:08 2012

    127 lines
5355 bytes
Last modified : Mon May 14 20:27:08 2012

1 //Time : 2012-04-12 06:34:46.721   1 //Time : 2012-04-12 06:35:05.964
2 //Files Open : /mcmutton/src/main/java/edu/ucsd/salud/mcmutton/BugHunt.java /pvekris/src/main/java/energy/interproc/CtxSensLocking.java /pvekris/src/main/java/energy/analysis/WakeLockManager.java /pvekris/src/main/java/energy/analysis/Opts.java /pvekris/src/main/java/energy/analysis/SpecialConditions.java /pvekris/src/main/java/energy/analysis/AnalysisResults.java /pvekris/src/main/java/energy/analysis/ComponentManager.java   2 //Files Open : /mcmutton/src/main/java/edu/ucsd/salud/mcmutton/BugHunt.java /pvekris/src/main/java/energy/interproc/CtxSensLocking.java /pvekris/src/main/java/energy/analysis/WakeLockManager.java /pvekris/src/main/java/energy/analysis/Opts.java /pvekris/src/main/java/energy/analysis/SpecialConditions.java /pvekris/src/main/java/energy/analysis/AnalysisResults.java /pvekris/src/main/java/energy/analysis/ComponentManager.java
3 package energy.analysis;   3 package energy.analysis;
4 import java.util.EnumMap;   4 import java.util.EnumMap;
5 import java.util.HashMap;   5 import java.util.HashMap;
6 import java.util.HashSet;   6 import java.util.HashSet;
7 import java.util.Map;   7 import java.util.Map;
8 import java.util.Map.Entry;   8 import java.util.Map.Entry;
9 import java.util.Set;   9 import java.util.Set;
10 import com.ibm.wala.types.FieldReference;   10 import com.ibm.wala.types.FieldReference;
11 import com.ibm.wala.util.collections.Pair;   11 import com.ibm.wala.util.collections.Pair;
12 import energy.components.Component;   12 import energy.components.Component;
13 import energy.interproc.CompoundLockState;   13 import energy.interproc.CompoundLockState;
14 import energy.interproc.SingleLockState;   14 import energy.interproc.SingleLockState;
15 import energy.util.E;   15 import energy.util.E;
16 public class AnalysisResults {   16 public class AnalysisResults {
17   private HashSet<Pair<Component,Map<String,Map<FieldReference,Set<SingleLockState>>>>> resultStuff=null;   17   private HashSet<Pair<Component,Map<String,Map<FieldReference,Set<SingleLockState>>>>> resultStuff=null;
18 public class ComponentResult {   18 public class ComponentResult {
19     HashMap<String,CompoundLockState> callBackExitStates;   19     HashMap<String,CompoundLockState> callBackExitStates;
20     public ComponentResult(){   20     public ComponentResult(){
21       callBackExitStates=new HashMap<String,CompoundLockState>();   21       callBackExitStates=new HashMap<String,CompoundLockState>();
22     }   22     }
23   }   23   }
24   /**   24   /**
25  * The constructor   25  * The constructor
26  */   26  */
27   AnalysisResults(){   27   AnalysisResults(){
28     resultStuff=new HashSet<Pair<Component,Map<String,Map<FieldReference,Set<SingleLockState>>>>>();   28     resultStuff=new HashSet<Pair<Component,Map<String,Map<FieldReference,Set<SingleLockState>>>>>();
29     callBackResultMap=new HashMap<Pair<String,String>,EnumMap<LockUsage,Integer>>();   29     callBackResultMap=new HashMap<Pair<String,String>,EnumMap<LockUsage,Integer>>();
30   }   30   }
31   int threadCount=0;   31   int threadCount=0;
32   int activityCount=0;   32   int activityCount=0;
33   int lockThreads=0;   33   int lockThreads=0;
34   int nolockThreads=0;   34   int nolockThreads=0;
35   int unlockThreads=0;   35   int unlockThreads=0;
36   int lockunlockThreads=0;   36   int lockunlockThreads=0;
37   public enum LockUsage { LOCKING, UNLOCKING, NOLOCKING, LOCKUNLOCK, EMPTY, UNKNOWN_STATE, FULL_UNLOCKING}   37   public enum LockUsage { LOCKING, UNLOCKING, NOLOCKING, LOCKUNLOCK, EMPTY, UNKNOWN_STATE, FULL_UNLOCKING}
38   private Map<Pair<String,String>,EnumMap<LockUsage,Integer>> callBackResultMap;   38   private Map<Pair<String,String>,EnumMap<LockUsage,Integer>> callBackResultMap;
39   public void registerExitLockState( Component component, Map<String,Map<FieldReference,Set<SingleLockState>>> map){   39   public void registerExitLockState( Component component, Map<String,Map<FieldReference,Set<SingleLockState>>> map){
40     resultStuff.add(Pair.make(component,map));   40     resultStuff.add(Pair.make(component,map));
41     StringBuffer sb=new StringBuffer();   41     StringBuffer sb=new StringBuffer();
42     for ( Entry<String,Map<FieldReference,Set<SingleLockState>>> e : map.entrySet()) {   42     for ( Entry<String,Map<FieldReference,Set<SingleLockState>>> e : map.entrySet()) {
43       if (e.getValue().size() > 0) {   43       if (e.getValue().size() > 0) {
44         sb.append(e.getKey() + "\n");   44         sb.append(e.getKey() + "\n");
45         for ( Entry<FieldReference,Set<SingleLockState>> entry : e.getValue().entrySet()) {   45         for ( Entry<FieldReference,Set<SingleLockState>> entry : e.getValue().entrySet()) {
46           sb.append(entry.getKey() + " -> " + entry.getValue().toString());   46           sb.append(entry.getKey() + " -> " + entry.getValue().toString());
47         }   47         }
48       }   48       }
49     }   49     }
50     if (sb.length() > 0) {   50     if (sb.length() > 0) {
51       E.log(1,component.toString() + "\n" + sb.toString());   51       E.log(1,component.toString() + "\n" + sb.toString());
52     }   52     }
53   }   53   }
54   private LockUsage getLockUsage( SingleLockState runState){   54   private LockUsage getLockUsage( SingleLockState runState){
55     if (runState != null) {   55     if (runState != null) {
56       if (runState.isMaybeAcquired() && (!runState.isMaybeReleased())) {   56       if (runState.isMaybeAcquired() && (!runState.isMaybeReleased())) {
57         return LockUsage.LOCKING;   57         return LockUsage.LOCKING;
58       }   58       }
59  else if (!runState.isMaybeReleased() && (!runState.isMaybeAcquired())) {   59  else if (!runState.isMaybeReleased() && (!runState.isMaybeAcquired())) {
60         return LockUsage.EMPTY;   60         return LockUsage.EMPTY;
61       }   61       }
62  else if (runState.isMaybeReleased() && (!runState.isMaybeAcquired())) {   62  else if (runState.isMaybeReleased() && (!runState.isMaybeAcquired())) {
63         return LockUsage.FULL_UNLOCKING;   63         return LockUsage.FULL_UNLOCKING;
64       }   64       }
65  else if (runState.isMaybeReleased()) {   65  else if (runState.isMaybeReleased()) {
66         return LockUsage.UNLOCKING;   66         return LockUsage.UNLOCKING;
67       }   67       }
68  else {   68  else {
69         return LockUsage.UNKNOWN_STATE;   69         return LockUsage.UNKNOWN_STATE;
70       }   70       }
71     }   71     }
72  else {   72  else {
73       return LockUsage.EMPTY;   73       return LockUsage.EMPTY;
74     }   74     }
75   }   75   }
76   public void processResults(){   76   public void processResults(){
      77     System.out.pr=$missing$;
77     for ( Pair<Component,Map<String,Map<FieldReference,Set<SingleLockState>>>> pair : resultStuff) {   78     for ( Pair<Component,Map<String,Map<FieldReference,Set<SingleLockState>>>> pair : resultStuff) {
78       Component component=pair.fst;   79       Component component=pair.fst;
79       String componentName=component.getComponentName();   80       String componentName=component.getComponentName();
80       Map<String,Map<FieldReference,Set<SingleLockState>>> callBackMap=pair.snd;   81       Map<String,Map<FieldReference,Set<SingleLockState>>> callBackMap=pair.snd;
81       for ( Entry<String,Map<FieldReference,Set<SingleLockState>>> e : callBackMap.entrySet()) {   82       for ( Entry<String,Map<FieldReference,Set<SingleLockState>>> e : callBackMap.entrySet()) {
82         String callBackName=e.getKey();   83         String callBackName=e.getKey();
83         Pair<String,String> compAndCB=Pair.make(component.toString(),callBackName);   84         Pair<String,String> compAndCB=Pair.make(component.toString(),callBackName);
84         Pair<String,String> abstCompAndCB=Pair.make(componentName,callBackName);   85         Pair<String,String> abstCompAndCB=Pair.make(componentName,callBackName);
85         HashMap<FieldReference,LockUsage> lockUsages=new HashMap<FieldReference,LockUsage>();   86         HashMap<FieldReference,LockUsage> lockUsages=new HashMap<FieldReference,LockUsage>();
86         for ( Entry<FieldReference,Set<SingleLockState>> fs : e.getValue().entrySet()) {   87         for ( Entry<FieldReference,Set<SingleLockState>> fs : e.getValue().entrySet()) {
87           FieldReference field=fs.getKey();   88           FieldReference field=fs.getKey();
88           Set<SingleLockState> sls=fs.getValue();   89           Set<SingleLockState> sls=fs.getValue();
89           SingleLockState sl=SingleLockState.mergeSingleLockStates(sls);   90           SingleLockState sl=SingleLockState.mergeSingleLockStates(sls);
90           LockUsage lockUsage=getLockUsage(sl);   91           LockUsage lockUsage=getLockUsage(sl);
91           lockUsages.put(field,lockUsage);   92           lockUsages.put(field,lockUsage);
92           EnumMap<LockUsage,Integer> enumMap=callBackResultMap.get(abstCompAndCB);   93           EnumMap<LockUsage,Integer> enumMap=callBackResultMap.get(abstCompAndCB);
93           if (lockUsage != LockUsage.EMPTY) {   94           if (lockUsage != LockUsage.EMPTY) {
94             E.log(1,compAndCB.toString() + " :: " + lockUsage.toString());   95             E.log(1,compAndCB.toString() + " :: " + lockUsage.toString());
95           }   96           }
96           updateEnumMap(enumMap,lockUsage);   97           updateEnumMap(enumMap,lockUsage);
97         }   98         }
98       }   99       }
99     }   100     }
100   }   101   }
101   private void updateEnumMap( EnumMap<LockUsage,Integer> enumMap, LockUsage lockUsage){   102   private void updateEnumMap( EnumMap<LockUsage,Integer> enumMap, LockUsage lockUsage){
102     if (enumMap == null) {   103     if (enumMap == null) {
103       enumMap=new EnumMap<LockUsage,Integer>(LockUsage.class);   104       enumMap=new EnumMap<LockUsage,Integer>(LockUsage.class);
104     }   105     }
105     Integer count=enumMap.get(lockUsage);   106     Integer count=enumMap.get(lockUsage);
106     if (count == null) {   107     if (count == null) {
107       count=new Integer(1);   108       count=new Integer(1);
108       enumMap.put(lockUsage,count);   109       enumMap.put(lockUsage,count);
109     }   110     }
110  else {   111  else {
111       enumMap.put(lockUsage,count + 1);   112       enumMap.put(lockUsage,count + 1);
112     }   113     }
113   }   114   }
114   public void outputFinalResults(){   115   public void outputFinalResults(){
115     for ( Entry<Pair<String,String>,EnumMap<LockUsage,Integer>> e : callBackResultMap.entrySet()) {   116     for ( Entry<Pair<String,String>,EnumMap<LockUsage,Integer>> e : callBackResultMap.entrySet()) {
116       Pair<String,String> key=e.getKey();   117       Pair<String,String> key=e.getKey();
117       E.log(1,key.toString());   118       E.log(1,key.toString());
118       EnumMap<LockUsage,Integer> usages=e.getValue();   119       EnumMap<LockUsage,Integer> usages=e.getValue();
119       for ( Entry<LockUsage,Integer> u : usages.entrySet()) {   120       for ( Entry<LockUsage,Integer> u : usages.entrySet()) {
120         LockUsage usage=u.getKey();   121         LockUsage usage=u.getKey();
121         Integer count=u.getValue();   122         Integer count=u.getValue();
122         E.log(1,"--> " + usage.toString() + " :: "+ count.toString());   123         E.log(1,"--> " + usage.toString() + " :: "+ count.toString());
123       }   124       }
124     }   125     }
125   }   126   }
126 }   127 }

Generated by diff2html on Mon May 14 20:59:11 2012
Command-line:
/usr/bin/diff2html DiffViewer/output/AnalysisResults.java//AnalysisResults.java_000 DiffViewer/output/AnalysisResults.java//AnalysisResults.java_001